package com.itheima.d1_char_stream;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/**
 * 目标：掌握文件字符输入流。
 *
 * 和FileInputStream的使用方法差不多
 */
public class FileReaderTest1 {
    public static void main(String[] args) {
//        test1();
        test2();
    }

    private static void test1() {
        //1、创建字符输入流对象，关联要读取的文件
        try (FileReader fr = new FileReader("day10io-app2/file/file01.txt")) {
            //2、调用read方法读取字符
            //public int read() ：一次读取一个字符返回，如果读取完毕返回-1

            int c; //定义一个变量临时保存读取的字符
            while ((c = fr.read()) != -1) {
//                System.out.println(c);
                System.out.println((char) c);
            }

            //3、释放资源 ---> 自动释放
        }catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void test2() {
        //1、创建字符输入流对象，关联要读取的文件
        try (FileReader fr = new FileReader("day10io-app2/file/file01.txt")) {
            //2、调用read方法读取字符
            //public int read(char[] cbuf) ：一次读取多个字符到数组中，返回读取字符的有效个数，如果读取完毕返回-1

            int len; //用来保存每次读取字符的个数
            char[] cbuf = new char[3];
            while ((len = fr.read(cbuf)) != -1) {
                //字符数组变成字符串（把有效的字符变成字符串）
                String str = new String(cbuf, 0, len);
                System.out.println(str);
//                System.out.println("cbuf = " + cbuf); //cbuf = [C@5305068a
            }

            //3、释放资源 ---> 自动释放
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
}
